template<typename T>

struct MyType {
  MyType() : value_(T()) {
  }
  explicit MyType(const T& v) : value_(v) {
  }
private:
  T value_;
};

enum color { black, red, green, blue };

struct point { 
    int x, y; 
};

int main()
{
  MyType<int> i;    
  MyType<color> c;  
  MyType<bool> b;   
  MyType<point> p;  
}
